Bi-directional LSTM-CNNs-CRF
有些朋友可能会问,上一期讲的以N-gram思想实现的模型在实际场景中能用到吗,具体使用在哪里,本期将会讲述N-gram配合CNN实现文本分类模型
CNN-卷积神经网路(Convolutional Neural Network)
cnn开始用于图像识别中,如下图即为图像识别分类模型,2*cnn+逻辑回归+softmax
卷积核扫描示意图
CNN用于自然语言文本分类
本期模型源于论文Convolutional Neural Networks for Sentence Classification
以下对模型额描述摘自论文,加一点点自己理解:
本模型是CNN architecture of Collobert的变体。首先将一句话按单词分开计算长度(这里指英文),将单词映射到Word Embedding层(参见Word2vec),就如上图左边。
使用filter扫描embbeding层生成新特征,filter定义:$w \in R^{hk}$ 其中h是词长度(本文中使用3~5),k为词特征长度。例如:特征 c_{i}由词窗口 x_{i:i+h-1}生成,公式:
b是偏移向量,f是激活函数,常用Relu。扫描句子的每一个可以的词窗口 {x1 h是词长度(本文中使用3~5),k为词特征长度。例如:特征公式1等到 $c = [c1, c2, . . . , cn−h+1]$。
接下来使用max-pool进行采样,获取最大值 $\hat{c} = c_{max}$
最后接入多分类和softmax。
代码实现
训练数据和测试数据取自Learning Question Classifiers,训练数据5000+条,测试数据500条。
数据预处理略过,具体实现可以参见corpus.py
模型实现:
这里解释下,在没有用Batch Normal的情况下,测试数据准确率更高一些,猜测是训练数据不多 权重初始化非常重要,使用了3个样例,分别是 -2~2,-1~1,-0.1~0.1,第三组效果好很多
训练数据提取
结果:500条测试数据,预测正确493条